
package br.com.petshop.dao;

import br.com.petshop.entidades.Usuario;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author Sidney
 * @version 1.0
 * @see GenericDAO
 * Esta classe contem os metodos basicos para manipulacao do bando de dados, extende a classe GenericDAO e tem como
 * proposito manipular a tabela de usuarios do banco.
 */
public class UsuarioDAO extends GenericDAO{
    
    public int adicionarUsuario(Usuario usuario)throws SQLException{
        usuario.setId((getNextId("usuario")));
        String query = "INSERT INTO petshop.usuario (Id, Nome,Login,Senha) VALUES(?,?,?,?)";
        executeCommand(query,usuario.getId(),usuario.getNome(),usuario.getLogin(),usuario.getSenha());
        return usuario.getId();
    }
    public void removeUsuario(int idUser) throws SQLException{
        executeCommand("DELETE FROM petshop.usuario WHERE Id = ?", idUser);
    }
    public void atualizarUsuario(Usuario usuario) throws SQLException{
        String query = "UPDATE petshop.usuario SET Nome = ?, Login = ?, Senha = ? WHERE Id = ?";
        executeCommand(query, usuario.getNome(),usuario.getLogin(),usuario.getSenha(),usuario.getId());
    }
    public Usuario getUsuario(int idUsuario) throws SQLException{
        ResultSet rs = executeQuery("SELECT * FROM petshop.usuario WHERE Id = ?", idUsuario);
        Usuario usuario = null;
        if(rs.next()){
        usuario = populateUserInfo(rs);  
        }
        rs.close();        
        return usuario;
    }
    //metodo ainda nao testado
    public List<Usuario> getTodosUsuarios() throws SQLException{
        ResultSet rs = executeQuery("SELECT * FROM petshop.usuario ");
        List <Usuario> usuarioRetornado = new LinkedList<Usuario>();
        while(rs.next()){
        usuarioRetornado.add(populateUserInfo(rs));  
        }
        rs.close(); 
        return usuarioRetornado;
        
    }
    public static Usuario populateUserInfo(ResultSet rs) throws SQLException {
       Usuario usuarioRetornado = new Usuario(); 
       usuarioRetornado.setId(rs.getInt("Id"));
       usuarioRetornado.setLogin(rs.getString("Login"));
       usuarioRetornado.setNome(rs.getString("Nome"));
       usuarioRetornado.setSenha(rs.getString("Senha"));
       return usuarioRetornado;
    }
    
}
